//
//  NSDate+Extension.swift
//  SinaBlog
//
//  Created by 李超 on 16/3/29.
//  Copyright © 2016年 lichao. All rights reserved.
//

import Foundation
import UIKit 

//对日期进行拓展
extension NSDate{
    
    //新浪返回的时间格式为"EEE MMM dd HH:mm:ss zzz yyyy"
   class func sinaDateFromString(dateString:String) -> NSDate{
       let formater = NSDateFormatter()
        
        formater.locale = NSLocale(localeIdentifier: "en")
        formater.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        //如果无值，则返回当前时间
        return formater.dateFromString(dateString) ?? NSDate()
    }
    
    //根据具体的时间规则来返回时间描述
    ///  返回日期描述字符串
    ///
    ///     格式如下
    ///     -   刚刚(一分钟内)
    ///     -   X分钟前(一小时内)
    ///     -   X小时前(当天)
    ///     -   昨天 HH:mm(昨天)
    ///     -   MM-dd HH:mm(一年内)
    ///     -   yyyy-MM-dd HH:mm(更早期)
    func sinaDateDecription() -> String{
        
          //获取当前日历
        let calendar = NSCalendar.currentCalendar()
        //判断是否是今天
        if calendar.isDateInToday(self){
            //判断是否是在一分钟之内
            let interval = NSDate().timeIntervalSinceDate(self)
            if interval > 0 && interval < 60{
                
               return "刚刚"
            }
            //判断是否在一小时之内
            if interval < 60 * 60{
                
                return "\(interval/60)分钟前"
            }
            
            return "\(interval/3600)小时"
        }
        //用于记录返回的日期格式的变量
        var format = ""
        //判断是否是昨天
        if calendar.isDateInYesterday(self){
          //作为昨天进行处理
           format = "HH:mm"
            
        }else{
         //作为更早的的日期进行处理
          //判断是今年还是更早的年份
            let result = calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year)
            if result == NSComparisonResult.OrderedSame{
                format = "MM-dd HH:mm"
            }else{
                format = "yyyy-MM-dd HH:mm"
            }
            
            
        }
        
        let formater = NSDateFormatter()
        formater.dateFormat = format
        let dateString = formater.stringFromDate(self)
        
        return dateString
    }
    
    
    
}